//
// Created by denglibin on 2019/6/17 0017.
//

/**
 * make_shared函数的主要功能是在动态内存中分配一个对象并初始化它，返回指向此对象的shared_ptr;
 * 由于是通过shared_ptr管理内存，因此一种安全分配和使用动态内存的方法。
 *
 * make_shared是一个模板函数；
 * make_shared在传递参数格式是可变的，参数传递为生成类型的构造函数参数，因此在创建shared_ptr<T>对象的过程中调用了类型T的某一个构造函数。
 */
#include <iostream>
#include <memory>
class MakeShare{
public:
    int a;
    MakeShare(int a){
        this->a = a;
    }

};

int main53(){
    std::shared_ptr<MakeShare> p = std::make_shared<MakeShare>(1);
    std::cout << p->a << std::endl;
    return 0;
}